package com.xyhuo.leetcode.december;

/**
 * Pow(x,n)
 * https://leetcode.cn/problems/powx-n/
 *
 * @time 2023/12/20
 */
public class MyPow {

//    public static void main(String[] args) {
//        MyPow mp = new MyPow();
//        double v = mp.myPow(1.0000000000001, -2147483648);
//        System.out.println(v);
//    }


    public double myPow(double x, int n) {
        long N = n;
        return N >= 0 ? quickMul(x, N) : 1.0 / quickMul(x, -N);
    }

    public double quickMul(double x, long N) {
        if (N == 0) {
            return 1.0;
        }
        double y = quickMul(x, N / 2);
        return N % 2 == 0 ? y * y : y * y * x;
    }

}
